<?php

 function isValid1($s){
 	if(!$s){
 		return true;
 	}
	 $string = $s;
	 $strLen = strlen($string);

	 if($strLen < 1){
	 	return false;
	 }
	 
	 $data = [];
	 $isSuccess = 1;

	 for($i = 0;$i < $strLen;$i ++){
	 	if($string[$i] == '(' || $string[$i] == '[' || $string[$i] == '{'){
	 		array_push($data,$string[$i]);
	 	}else{
	 		switch($string[$i]){
	 			case ')':
					$tmpData = array_pop($data);
					if($tmpData != '('){
						$isSuccess = 0;
					}
					break;
				case '}':
					$tmpData = array_pop($data);
					if($tmpData != '{'){
						$isSuccess = 0;
					}
					break;
				case ']':
					$tmpData = array_pop($data);
					if($tmpData != '['){
						$isSuccess = 0;
					}
					break;
				default:
				
	 		}

	 	
	 	}

	}
	var_dump($isSuccess);

	if(!$isSuccess){
		return false;
	}

	// if(!empty($data)){
	// 	return false;
	// }

	return empty($data);
}

function piPei2(){
	 $string = '({}{}{({}){()}})';
	 $map = [
            ")" => "(",
            "}" => "{",
            "]" => "[",
        ];

	 $strLen = strlen($string);

	 if($strLen < 1){
	 	return false;
	 }
	 
	 $data = [];
	 $flag = 0;

	 for($i = 0;$i < $strLen;$i ++){
	 	if($string[$i] == '(' || $string[$i] == '[' || $string[$i] == '{'){
	 		array_push($data,$string[$i]);
	 	}else{
	 		$tmpData = end($data);
	 		// var_dump($tmpData);
	 		// die;
	 		switch($string[$i]){
	 			case ')':
					if($tmpData == '('){
						array_pop($data);
						$flag = 1;
					}else{
						$flag = 0;
					}
					break;
				case '}':
					if($tmpData == '{'){
						array_pop($data);
						$flag = 1;
					}else{
						$flag = 0;
					}
					break;
				case ']':
					if($tmpData == '['){
						array_pop($data);
						$flag = 1;
					}else{
						$flag = 0;
					}
					break;
				default:
				$flag = 0;
	 		}
	 		if(!$flag){
	 			break;
	 		}
	 	}

	}

	// if($flag){
	// 	return true;
	// }
	// if()

	if(!empty($data)){
		return false;
	}
	var_dump($flag);

	return !!$flag;
}

function isValid($s){
	 $string = $s;
	 if(!$s) return true;
	 $map = [
            ")" => "(",
            "}" => "{",
            "]" => "[",
        ];

	 $strLen = strlen($string);

	 if($strLen < 1){
	 	return false;
	 }
	 
	 $data = [];
	 $flag = 0;

	 for($i = 0;$i < $strLen;$i ++){
	 	if(!isset($map[$string[$i]])){
	 		array_push($data,$string[$i]);
	 	}else{
	 		$tmpData = end($data);
	 		if($tmpData == $map[$string[$i]]){
	 			array_pop($data);
	 		}else{
	 			return false;
	 		}
	 	}
	}

	if(!empty($data)){
		return false;
	}
	return true;
}

function isValidd($s) {
        $stack = new SplStack();
        $length = strlen($s);
        for($i=0;$i<$length;$i++)
        {
            if($s[$i] == "(") $stack->push(")");
            else if($s[$i] == "{") $stack->push("}");
            else if($s[$i] == "[") $stack->push("]");
            else if($stack->isEmpty() || $s[$i] != $stack->pop()) return false;
        }
        return $stack->isEmpty();
    }

var_dump(isValidd("()[]{}"));
 
